﻿using System;
using LogLevel = Exceptionless.Logging.LogLevel;

namespace ZilLion.Core.Log
{
    /// <summary>
    ///     日志接口
    /// </summary>
    public interface ILoggerProvider
    {
        /// <summary>
        ///     记录Debug信息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Debug(string message, object context = null, params string[] tags);

        /// <summary>
        ///     记录错误
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Error(Exception ex, object context = null, params string[] tags);

        /// <summary>
        ///     记录Info
        /// </summary>
        /// <param name="message"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Info(string message, object context = null, params string[] tags);

        /// <summary>
        ///     记录跟踪
        /// </summary>
        /// <param name="message"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Trace(string message, object context = null, params string[] tags);

        /// <summary>
        ///     记录警告
        /// </summary>
        /// <param name="message"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Warn(string message, object context = null, params string[] tags);

        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="message"></param>
        /// <param name="level"></param>
        /// <param name="context"></param>
        /// <param name="tags"></param>
        void Log(string message, LogLevel level, object context = null, params string[] tags);




    }
}